package com.entity.yaml

import com.FileCrcMode
import com.annotations.DefaultValue
import io.github.stream29.jsonschemagenerator.Description
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
@SerialName("fileCrc")
data class FileCrc(
    /**
     * 文件重命名模式配置
     *
     * 用于控制输出文件的重命名行为，可选值包括：
     * - [FileCrcMode.NONE]: 不进行重命名
     * - [FileCrcMode.APPEND]: 在文件名后追加CRC值
     * - [FileCrcMode.PREFIX]: 在文件名前添加CRC值
     * - [FileCrcMode.FULL]: 将整个文件名替换为CRC值
     */
    @property:Description("文件重命名模式配置，用于控制输出文件的重命名行为")
    @DefaultValue("NONE")
    var mode: FileCrcMode = FileCrcMode.NONE,
    /**
     * 要保留文件名的列表 通配符模式，支持glob模式匹配
     */
    @property:Description("要保留文件名的列表 通配符模式，支持glob模式匹配")
    val keepFileName: List<String> = emptyList(),
    /**
     * 需要进行CRC修改的文件列表 通配符模式，支持glob模式匹配
     *
     * 只有匹配此列表的文件才会应用CRC重命名规则
     */
    @property:Description("需要进行CRC修改的文件列表 通配符模式，支持glob模式匹配，只有匹配此列表的文件才会应用CRC重命名规则")
    val include: List<String> = emptyList()



)
